const Play = require('../lib/mongo').Play

module.exports = {
  // 创建一个来源
  create: function create (play) {
    return Play.create(play).exec()
  },

  // 通过 id 获取一个来源
  getPlayById: function getPlayById (playId) {
    return Play.findOne({ _id: playId }).exec()
  },

  // 通过 id 获取一篇原生信息（编辑）
  getRawPlayById: function getRawPlayById (playId) {
    return Play
      .findOne({ _id: playId })
      .populate({ path: 'author', model: 'User' })
      .exec()
  },

  // 通过文章 id 更新一篇文章
  updatePlayById: function updatePlayById (playId, data) {
    return Play.update({ _id: playId }, { $set: data }).exec()
  },

  // 通过文章 id 给 pv 加 1
  incPv: function incPv (playId) {
    return Play
      .update({ _id: playId }, { $inc: { pv: 1 } })
      .exec()
  },

  // 通过 id 删除一个来源
  delPlayById: function delPlayById (playId) {
    return Play.deleteOne({ _id: playId }).exec()
  },

  // 通过文章 id 删除该文章下所有来源
  delPlaysByPostId: function delPlaysByPostId (epId) {
    return Play.deleteMany({ epId: epId }).exec()
  },

  // 通过文章 id 获取该文章下所有来源，按来源创建时间升序
  getPlay: function getPlay (epId) {
    return Play
      .find({ epId: epId })
      .populate({ path: 'author', model: 'User' })
      .sort({ _id: 1 })
      .addCreatedAt()
      .exec()
  },

  // 通过动漫 id 获取该文章下剧集数
  getPlayCount: function getPlayCount (epId) {
    return Play.count({ epId: epId }).exec()
  }
}
